package DataManager;

import Utility.CommonUtils;
//import com.vivoo.Memcache;
import DataManager.DbManager;
//import com.vivoo.Memcache;
import PIServer.LocalSettings;
import Service.UserObj;
import java.util.ArrayList;
import vcore.lib.vcclient;
import vcore.obj.vcoreQUser;
import vcore.obj.vcoreUser;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class VCoreUserDataProvider {
    public static Logger log = LoggerFactory.getLogger(VCoreUserDataProvider.class.getName());

    static public vcclient CoreClient;

    public synchronized static vcclient getInstance() {
        if (CoreClient == null) {
            try {
                CoreClient = new vcclient(LocalSettings.VCORE_URL,
                        LocalSettings.CARDPAY_URL,
                        LocalSettings.VMG_CARDPAY_URL);
            }
            catch (Exception ex) {
                log.error("vcclient", ex);
            }
        }
        return CoreClient;
    }

    private int USERNAME_MIN_LENGTH = 4;
    private int USERNAME_MAX_LENGTH = 10;
    private int PASSWORD_MIN_LENGTH = 3;
    private int PASSWORD_MAX_LENGTH = 10;

    public VCoreUserDataProvider()
    {
        //
        if (CoreClient == null)
            getInstance();
    }

    public void closeConnection()
    {
//        try
//        {
//            conn.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
    }
//
//    public Connection getCustomConnection(int index){
//        try
//        {
//            DbManager connM = new DbManager();
//            Class.forName("com.mysql.jdbc.Driver").newInstance();
//            String[] mysqlConnectionString = connM.getConnectionString(index);
//            conn = DriverManager.getConnection(mysqlConnectionString[0], mysqlConnectionString[1], mysqlConnectionString[2]);
//        }
//        catch (Exception ex)
//        {
//            log.info("Couldn't connect to the MySQL database.  Make sure the MySQL connector jar is in the lib directory.  See the installation documentation for more information. ");
//            log.error(ex.getClass().getName(),ex);
//        }
//        return conn;
//    }
//
//    public void closeCustomConnection(Connection conn){
//        try
//        {
//            conn.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
//    }

    public boolean changePassword(String userName, String password_old, String password_new)
    {

        boolean retVal = false;
        if (!(validateUsernamePasswordLengths(userName, password_new)))
        {
            retVal = false;
        }
        if (CoreClient.UpdatePasswordByUserName(userName, password_old, password_new))
        {
             retVal = true;
        }
        return retVal;
    }


//    public String getLastLoginDate(String userName)
//    {
//        if (!(validateUsername(userName)))
//        {
//            return "";
//        }
//        try
//        {
//            Statement s = conn.createStatement();
//            ResultSet rs = s.executeQuery("select LastLoginDate from vivoo_User_Mobile where UserName='" + userName + "'");
//            if (rs.next())
//            {
//                return rs.getString(1);
//            }
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
//        return "";
//    }

//    public String checkAccountStatus(String userName)
//    {
//        if (!(validateUsername(userName)))
//        {
//            return "F";
//        }
//
//        try
//        {
//            Statement s = conn.createStatement();
//            ResultSet rs = s.executeQuery("select is_active from users where username='" + userName + "'");
//
//            if (rs.next())
//            {
//                if (rs.getString(1).equalsIgnoreCase("y"))
//                {
//                    return "T";
//                }
//            }
//
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//            return "F";
//        }
//        return "F";
//    }

//    public void enableAccount(String userName)
//    {
//        if(!(VMServer.manageAccounts))
//                return;
//
//        if (!(validateUsername(userName)))
//        {
//            return;
//        }
//
//        try
//        {
//            Statement s = conn.createStatement();
//            s.execute("update users set is_active='Y' where username = '" + userName + "'");
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
//    }
//
//    public void disableAccount(String userName)
//    {
//        if(!(VMServer.manageAccounts))
//                return;
//
//        if(userName.equalsIgnoreCase("admin"))
//            return;
//
//        if (!(validateUsername(userName)))
//        {
//            return;
//        }
//
//        try
//        {
//            Statement s = conn.createStatement();
//            s.execute("update users set is_active='N' where username = '" + userName + "'");
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
//    }
//
//    public boolean createAccount_(String userName, String password,
//            String fullName, String address, int birthYear, int gender, String email)
//    {
////        if(!(VMServer.manageAccounts))
////                return false;
//
//        try
//        {
//            if (!(validateUsernamePasswordLengths(userName, password)))
//            {
//                return false;
//            }
//
//            password=CommonUtils.getHashPassword(password);
//            switchConnection(0);
//            Statement s = conn.createStatement();
//            //s.execute("insert into users values (DEFAULT, '" + userName + "', '" + password + "', date(CURRENT_DATE), 'Y')");
//            String sql = String.format("insert into users values (DEFAULT, '%s', '%s', date(CURRENT_DATE), 'Y', " +
//                        "%d, %d, '%s', '%s', %d, %d, '%s',NULL,NULL,NULL)",
//                    userName,password, 1000, 0, fullName, address, birthYear, gender, email);
//
//            log.info(sql);
//            s.execute(sql);
//            s.close();
//
//            //update to core
//           // switchConnection(1);
//            Statement s1 = conn.createStatement();
//            //s.execute("insert into users values (DEFAULT, '" + userName + "', '" + password + "', date(CURRENT_DATE), 'Y')");
//            String sql1 = String.format("insert into vivoo_User_Mobile"
//                    +" values (DEFAULT,'%s',NULL,NULL,'%s','%s','%s',NULL,'%d',"
//                    +"NULL,1,date(CURRENT_DATE),NULL,'%d',NULL,NULL,NULL,NULL,NULL,NULL)",
//                    userName,fullName,email,password,gender,50000);
//            log.info(sql1);
//            //log.info(sql);
//            s1.execute(sql1);
//            s1.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//            return false;
//        }
//        return true;
//    }


     public boolean createAccount(String userName, String password,
            String fullName, String address, int birthYear, int gender, String email)
    {
        boolean retval = false;

       if (CoreClient.RegisterMobile(userName,password,fullName, address, birthYear, gender , email  ) )
       {
           //int userID=CoreClient.GetUserIdByUsername(userName);
           //CoreClient.UpdateMoney(userID, 50000, 0, "New registration");
         retval = true;
       }
       else retval = false;

       return retval;
    }

     public vcoreQUser createGuestAccount()
    {
        int retval = 0;
        vcoreQUser quick_register = CoreClient.QuickRegister();

        return quick_register;
    }

//    public boolean updateAccount_(String userName,String fullName, String address, int birthYear, int gender,String cmnd,String mobile,String city)
//    {
////        if(!(VMServer.manageAccounts))
////                return false;
//        try
//        {
//            Statement s = conn.createStatement();
//            //s.execute("insert into users values (DEFAULT, '" + userName + "', '" + password + "', date(CURRENT_DATE), 'Y')");
//            String sql = String.format("UPDATE users SET fullname='%s',address='%s',birth_year='%d',gender='%d',cmnd='%s',mobile='%s',city='%s' WHERE username='%s' AND is_active='Y'",
//                     fullName, address, birthYear, gender,cmnd,mobile,city,userName);
//            log.info(sql);
//            s.execute(sql);
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//            return false;
//        }
//        return true;
//    }

    public boolean updateAccountInfo(String userName,String fullName, String address, int birthYear, int gender,String cmnd,String mobile, int city)
    {
        return CoreClient.UpdateAccountMobile(userName, fullName , address , birthYear , gender , cmnd , mobile , city  );
    }

    /**
         * Cáº­p nháº­t thá»�i gian online
         * @param userName
         * @return boolean
    */
    public boolean updateActionTime(String userName)
    {
        return CoreClient.UpdateActiontime(userName, 1);

    }

    /**
         * Láº¥y thá»�i gian online
         * @param userName
         * @return ArrayList: element 0 lÃ  username, 1 lÃ  thá»�i gian online tÃ­nh báº±ng giÃ¢y , 2 lÃ  UNIXTIMESTAMP last action, 3 UNIXTIMESTAMP last login
    */
     public ArrayList getActionTime(String userName)
    {
        return CoreClient.GetActiontime(userName);

    }

//     public UserObj getAccount_(String username){
//        UserObj userInfo = new UserObj();
//        //StringBuilder sb = new StringBuilder();
//        try
//        {
//            switchConnection(0);
//            Statement s = conn.createStatement();
//            ResultSet rs = s.executeQuery("SELECT fullname,address,birth_year,gender,cmnd,mobile,city,avatar FROM users WHERE username='"+username+"'");
//
//            if(rs.next())
//            {
//                //sb.append(rs.getInt("money")).append("~");
//                //sb.append(rs.getString("fullname")).append("~");
//                if(rs.getString("fullname")!=null)
//                    userInfo.fullname=rs.getString("fullname");
//                //sb.append(rs.getString("address")).append("~");
//                if(rs.getString("address")!=null)
//                    userInfo.address=rs.getString("address");
//                //sb.append(rs.getInt("birth_year")).append("~");
//                if(rs.getString("birth_year")!=null)
//                    userInfo.birth_year=rs.getString("birth_year");
//                //sb.append(rs.getInt("gender")).append("~");
//                userInfo.gender=(byte)rs.getInt("gender");
//                //sb.append(rs.getString("cmnd")).append("~");
//                if(rs.getString("cmnd")!=null)
//                    userInfo.cmnd=rs.getString("cmnd");
//                //sb.append(rs.getString("mobile")).append("~");
//                if(rs.getString("mobile")!=null)
//                    userInfo.mobile=rs.getString("mobile");
//                //sb.append(rs.getString("city")).append("~");
//                if(rs.getString("city")!=null)
//                    userInfo.city=rs.getString("city");
//                userInfo.avatar=rs.getInt("avatar");
//                userInfo.username=username;
//            }
//            s.close();
//
//           // switchConnection(1);
//            Statement s1=conn.createStatement();
//            ResultSet rs1 = s1.executeQuery("SELECT Money1 FROM vivoo_User_Mobile WHERE UserName='"+username+"'");
//            if(rs1.next())
//            {
//                //sb.append(rs1.getInt("Money1"));
//                userInfo.money=rs1.getInt("Money1");
//            }
//            s1.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
//        return userInfo;
//    }

//      public UserObj getAccountInfo(String username){
//
//          try {
//              MySQLCommonDataProvider dataManager = DbManager.GetCommonDataManager();
//
//              UserObj userInfo = new UserObj();
//              vcoreUser UserInfoObj = CoreClient.GetInfobyUserName(username);
//
//              userInfo.fullname = UserInfoObj.user_firstname;
//              if ((UserInfoObj.user_middlename!=null)&&(UserInfoObj.user_middlename.length() > 0)) {
//                  userInfo.fullname += UserInfoObj.user_middlename;
//              }
//              if ((UserInfoObj.user_lastname!=null)&&(UserInfoObj.user_lastname.length() > 0)) {
//                  userInfo.fullname += UserInfoObj.user_lastname;
//              }
//              userInfo.gender = (byte) UserInfoObj.user_gender;
//              userInfo.address = UserInfoObj.user_address;
//              userInfo.cmnd = String.valueOf(UserInfoObj.user_idnumber);
//              userInfo.mobile = UserInfoObj.user_mobile;
//              userInfo.money = UserInfoObj.user_money;
//
//              userInfo.city = UserInfoObj.state_id;
//              userInfo.userid = UserInfoObj.user_id;
//              userInfo.birth_year = CommonUtils.ParseInt(UserInfoObj.user_birthday.substring(0, 4));
//              userInfo.username = UserInfoObj.user_username;
//
//              MySQLCommonDataProvider commonDataManager = DbManager.GetCommonDataManager();
//              UserObj userExtraInfo = commonDataManager.getUserDisplayInfo(username);
//
//              userInfo.avatar =  userExtraInfo.avatar;
//              userInfo.nickColor =  userExtraInfo.nickColor;
//
//              userInfo.emotion_status= userExtraInfo.emotion_status;
//              userInfo.user_level = userExtraInfo.user_level;
//
//              dataManager.closeConnection();
//              commonDataManager.closeConnection();
//              return userInfo;
//          } catch (Exception e) {
//              e.printStackTrace();
//              return null;
//          }
//    }

    public UserObj getAccountInfo(int userID){
          try {
              vcoreUser UserInfoObj = CoreClient.GetInfobyUserid(userID);
              UserObj userInfo = convertCoreUserInfo(UserInfoObj);
              return userInfo;
          } catch (Exception ex) {
              log.error("getAccountInfoID", ex);
              return null;
          }
    }

    public UserObj getAccountInfo(String userName){
          try {
              vcoreUser UserInfoObj = CoreClient.GetInfobyUserName(userName);
              UserObj userInfo = convertCoreUserInfo(UserInfoObj);
              return userInfo;
          } catch (Exception ex) {
              log.error("getAccountInfoName", ex);
              return null;
          }
    }

    public UserObj convertCoreUserInfo(vcoreUser UserInfoObj) {
               UserObj userInfo = new UserObj();
              //MySQLCommonDataProvider dataManager = DbManager.GetCommonDataManager();
              userInfo.username = UserInfoObj.user_username;
              userInfo.userid = UserInfoObj.user_id;
              userInfo.fullname = UserInfoObj.user_firstname;
              if ((UserInfoObj.user_middlename!=null)&&(UserInfoObj.user_middlename.length() > 0)) {
                  userInfo.fullname += UserInfoObj.user_middlename;
              }
              if ((UserInfoObj.user_lastname!=null)&&(UserInfoObj.user_lastname.length() > 0)) {
                  userInfo.fullname += UserInfoObj.user_lastname;
              }
              userInfo.gender = (byte) UserInfoObj.user_gender;
              userInfo.address = UserInfoObj.user_address;
              userInfo.cmnd = String.valueOf(UserInfoObj.user_idnumber);
              userInfo.mobile = UserInfoObj.user_mobile;

              userInfo.city = UserInfoObj.state_id;
              userInfo.userid = UserInfoObj.user_id;
              userInfo.birth_year = 0;
              if (UserInfoObj.user_birthday!=null) {
                    userInfo.birth_year = CommonUtils.ParseInt(UserInfoObj.user_birthday.substring(0, 4));
              }

              userInfo.SMS_reg_provider = UserInfoObj.mobile_reg_provider;
              userInfo.username = UserInfoObj.user_username;
              userInfo.user_type= UserInfoObj.user_type;

              MySQLCommonDataProvider commonDataManager = DbManager.GetCommonDataManager();
              UserObj userExtraInfo = commonDataManager.getUserServiceInfoByUserID(userInfo.userid);
              if (userExtraInfo == null) {
                  userInfo.money = 0; // default money for new users
                  userInfo.avatar = 0;
                  userInfo.nickColor = 0xFFFFFF;
                  userInfo.emotion_status= null;
                  userInfo.user_level = 0;
                  userInfo.is_active = 'N';
                  commonDataManager.createNewUserRecord(userInfo);
              }
              else {
                  userInfo.money = userExtraInfo.money;

                  userInfo.avatar =  userExtraInfo.avatar;
                  userInfo.nickColor =  userExtraInfo.nickColor;

                  userInfo.emotion_status= userExtraInfo.emotion_status;
                  userInfo.user_level = userExtraInfo.user_level;
                  userInfo.is_active = userExtraInfo.is_active;
                }

              //dataManager.closeConnection();
              commonDataManager.closeConnection();
              return userInfo;
    }

//    public String getAccountMemcache(String username){
//        StringBuilder sb = new StringBuilder();
//        StringBuilder moneySb = new StringBuilder();
//        String accountInfo="";
//        try
//        {
//            accountInfo=(String)Memcache.getInstance().get("info-"+username);
//            if(accountInfo==null){
//                Statement s = conn.createStatement();
//                ResultSet rs = s.executeQuery("SELECT fullname,address,birth_year,gender,cmnd,mobile,city FROM users WHERE username='"+username+"'");
//                if(rs.next())
//                {
//                    //sb.append(rs.getInt("money")).append("~");
//                    sb.append(rs.getString("fullname")).append("~");
//                    sb.append(rs.getString("address")).append("~");
//                    sb.append(rs.getInt("birth_year")).append("~");
//                    sb.append(rs.getInt("gender")).append("~");
//                    sb.append(rs.getString("cmnd")).append("~");
//                    sb.append(rs.getString("mobile")).append("~");
//                    sb.append(rs.getString("city")).append("~");
//                }
//                s.close();
//                Memcache.getInstance().set("info-"+username, 36000, sb.toString());
//                accountInfo=sb.toString();
//            }else{
//                log.info("aaa");
//            }
//
//            switchConnection(1);
//            Statement s1=conn.createStatement();
//            ResultSet rs1 = s1.executeQuery("SELECT Money1 FROM vivoo_User_Mobile WHERE UserName='"+username+"'");
//            if(rs1.next())
//            {
//                moneySb.append(rs1.getInt("Money1"));
//            }
//            s1.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
//        log.info(accountInfo+moneySb.toString());
//        return accountInfo+moneySb.toString();
//    }



//    public boolean checkIfAccountExists_(String userName)
//    {
//        if (!(validateUsername(userName)))
//        {
//            return false;
//        }
//
//        boolean retVal = false;
//
//        try
//        {
//           // switchConnection(1);
//            Statement s = conn.createStatement();
//            ResultSet rs = s.executeQuery("select * from vivoo_User_Mobile where UserName = '" + userName + "'");
//
//            if (rs.next())
//            {
//                retVal = true;
//            }
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
//
//        return retVal;
//    }


    public boolean checkIfUserNameExists(String userName)
    {
        boolean retVal = false;

        if (!(validateUsername(userName)))
        {
            retVal =  false;
        }

        retVal = CoreClient.CheckUsernameExists(userName);

        return retVal;
    }


//    public void deleteAccount_(String userName)
//    {
////        if(!(VMServer.manageAccounts))
////                return;
////
//        if (!(validateUsername(userName)))
//        {
//            return;
//        }
//
//        try
//        {
//           // switchConnection(1);
//            Statement s = conn.createStatement();
//            //s.execute("delete from user_properties where username = '" + userName + "'");
//            s.execute("delete from vivoo_User_Mobile where UserName='" + userName + "'");
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
//    }


    public void deleteAccount(String userName)
    {

          CoreClient.LockAccountByUsername(userName,0,"KhÃ³a acc tá»« GameMobile");
    }

//    public boolean checkIfAddressIsBlocked(String ip)
//    {
//        boolean retVal = false;
//
//        try
//        {
//            Statement s = conn.createStatement();
//            ResultSet rs = s.executeQuery("select * from banned where ip_address = '" + ip + "'");
//
//            if (rs.next())
//            {
//                retVal = true;
//            }
//
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
//
//        return retVal;
//    }

//    public void blockAddress(String ip)
//    {
//        try
//        {
//            if (ip.trim().length() <= 0)
//            {
//                return;
//            }
//
//            Statement s = conn.createStatement();
//            s.execute("insert into banned values (DEFAULT, '" + ip + "')");
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
//    }

//    public void unblockAddress(String ip)
//    {
//        try
//        {
//            if (ip.trim().length() <= 0)
//            {
//                return;
//            }
//
//            Statement s = conn.createStatement();
//            s.execute("delete from banned where ip_address='" + ip + "'");
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
//    }

//    public void insertGlobalProperty(String propertyName, String propertyValue)
//    {
//        try
//        {
//            if (!(validatePropertyLengths(propertyName, propertyValue)))
//            {
//                return;
//            }
//
//            deleteGlobalProperty(propertyName);
//
//            Statement s = conn.createStatement();
//            s.execute("insert into global_properties values (DEFAULT, '" + propertyName + "', '" + propertyValue + "')");
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
//    }
//
//    public void deleteGlobalProperty(String propertyName)
//    {
//        try
//        {
//            if ((propertyName.length() <= 0) || (propertyName.length() > 15))
//            {
//                return;
//            }
//
//            Statement s = conn.createStatement();
//            s.execute("delete from global_properties where property_name='" + propertyName + "'");
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
//    }
//
//    public void updateGlobalProperty(String propertyName, String propertyValue)
//    {
//        try
//        {
//            if (!(validatePropertyLengths(propertyName, propertyValue)))
//            {
//                return;
//            }
//
//            Statement s = conn.createStatement();
//            s.execute("update global_properties set property_value='" + propertyValue + "' where property_name='" + propertyName + "'");
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
//    }
//
//    public String readGlobalProperty(String propertyName)
//    {
//        String retVal = "";
//
//        if ((propertyName.length() <= 0) || (propertyName.length() > 15))
//        {
//            return retVal;
//        }
//
//        try
//        {
//            Statement s = conn.createStatement();
//            ResultSet rs = s.executeQuery("select property_value from global_properties where property_name='" + propertyName + "'");
//
//            if (rs.next())
//            {
//                retVal = rs.getString(1);
//            }
//
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
//
//        return retVal;
//    }
//
//    public void insertProperty(String userName, String propertyName, String propertyValue)
//    {
//        try
//        {
//            if (!(validateUsernameAndPropertyLengths(userName, propertyName, propertyValue)))
//            {
//                return;
//            }
//
//            deleteProperty(userName, propertyName);
//
//            Statement s = conn.createStatement();
//            s.execute("insert into user_properties values (DEFAULT, '" + userName + "', '" + propertyName + "', '" + propertyValue + "')");
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
//    }
//
//    public void updateProperty(String userName, String propertyName, String propertyValue)
//    {
//        try
//        {
//            if (!(validateUsernameAndPropertyLengths(userName, propertyName, propertyValue)))
//            {
//                return;
//            }
//
//            Statement s = conn.createStatement();
//            s.execute("update user_properties set property_value='" + propertyValue + "' where username = '" + userName + "' and property_name='" + propertyName + "'");
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
//    }
//
//    public void deleteProperty(String userName, String propertyName)
//    {
//        try
//        {
//            if (!(validateUsernamePropertyName(userName, propertyName)))
//            {
//                return;
//            }
//
//            Statement s = conn.createStatement();
//            s.execute("delete from user_properties where property_name='" + propertyName + "' and username = '" + userName + "'");
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
//    }
//
//    public String readProperty(String userName, String propertyName)
//    {
//        String retVal = "";
//
//        if (!(validateUsernamePropertyName(userName, propertyName)))
//        {
//            return retVal;
//        }
//
//        try
//        {
//            Statement s = conn.createStatement();
//            ResultSet rs = s.executeQuery("select property_value from user_properties where username = '" + userName + "' and property_name='" + propertyName + "'");
//
//            if (rs.next())
//            {
//                retVal = rs.getString(1);
//            }
//
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
//
//        return retVal;
//    }
//
//    public String getAllUsers_()
//    {
//        StringBuilder sb = new StringBuilder();
//
//        try
//        {
//
//          //  switchConnection(1);
//            Statement s = conn.createStatement();
//            ResultSet rs = s.executeQuery("select UserName from vivoo_User_Mobile");
//
//            while (rs.next())
//            {
//                sb.append(rs.getString(1) + "~");
//            }
//
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
//
//        return sb.toString();
//    }


    public String getAllUsers()
    {
        String data = "";

          data = CoreClient.GetUserListMobile();

        return data;
    }


//    public String getAllUserPropertyNames(String userName)
//    {
//        if (!(validateUsername(userName)))
//        {
//            return "";
//        }
//
//        StringBuilder sb = new StringBuilder();
//
//        try
//        {
//            Statement s = conn.createStatement();
//            ResultSet rs = s.executeQuery("select property_name from user_properties where username='" + userName + "'");
//
//            while (rs.next())
//            {
//                sb.append(rs.getString(1) + "~");
//            }
//
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
//
//        return sb.toString();
//    }

//    public String getAllGlobalPropertyNames()
//    {
//        StringBuilder sb = new StringBuilder();
//
//        try
//        {
//            Statement s = conn.createStatement();
//            ResultSet rs = s.executeQuery("select property_name from global_properties");
//
//            while (rs.next())
//            {
//                sb.append(rs.getString(1) + "~");
//            }
//
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
//
//        return sb.toString();
//    }
//
//    public boolean isAuthenticated_(String userName, String password)
//    {
//        boolean retVal = false;
//
//        try
//        {
//          //  switchConnection(1);
//            Statement s = conn.createStatement();
//            password=CommonUtils.getHashPassword(password);
//            ResultSet rs = s.executeQuery("select * from vivoo_User_Mobile where UserName= '" + userName + "' and Password='" + password + "' ");
//           // Update their last login date
//            updateLastLogin(userName);
//            if (rs.next())
//            {
//                retVal = true;
//            }
//            else
//            {
//                retVal = false;
//            }
//
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
//
//        return retVal;
//    }

    public int isAuthenticated(String userName, String password)
    {
        // @return -1 acc bị khóa/chưa kích hoạt, 0 sai mật khẩu, 1 thành công
        int retVal = CoreClient.Login(userName, password);
        return retVal;
    }


//    public void updateLastLogin(String userName)
//    {
//        try
//        {
//            //switchConnection(1);
//            Statement s = conn.createStatement();
//            s.execute("update vivoo_User_Mobile set LastLoginDate = date(CURRENT_DATE) where UserName='" + userName + "'");
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
//    }

    private boolean validateUsername(String userName)
    {
        if ((userName.length() <= USERNAME_MIN_LENGTH)
                || (userName.length() > USERNAME_MAX_LENGTH))
        {
            return false;
        }

        return true;
    }

//    private boolean validateUsernamePropertyName(String userName, String propertyName)
//    {
//        if ((userName.length() <= 0) || (userName.length() > 15))
//        {
//            return false;
//        }
//        if ((propertyName.length() <= 0) || (propertyName.length() > 15))
//        {
//            return false;
//        }
//
//        return true;
//    }
//
//    private boolean validatePropertyLengths(String propertyName, String propertyValue)
//    {
//        if ((propertyName.length() <= 0) || (propertyName.length() > 15))
//        {
//            return false;
//        }
//        if ((propertyValue.length() <= 0) || (propertyValue.length() > 15))
//        {
//            return false;
//        }
//        return true;
//    }
//
//    private boolean validateUsernameAndPropertyLengths(String userName, String propertyName, String propertyValue)
//    {
//        if (!(validateUsernamePropertyName(userName, propertyName)))
//        {
//            return false;
//        }
//
//        if (propertyValue.length() > 100)
//        {
//            return false;
//        }
//
//        return true;
//    }
//
    private boolean validateUsernamePasswordLengths(String userName, String password)
    {
        if ((userName.length() <= USERNAME_MIN_LENGTH)
                || (userName.length() > USERNAME_MAX_LENGTH))
        {
            return false;
        }
        if ((password.length() <= PASSWORD_MIN_LENGTH) || (password.length() > PASSWORD_MAX_LENGTH))
        {
            return false;
        }

        return true;
    }

//    public String retrieveAdminPassword()
//    {
//        String retVal = "";
//
//        try
//        {
//           // switchConnection(1);
//            Statement s = conn.createStatement();
//            ResultSet rs = s.executeQuery("select Password from vivoo_User_Mobile where UserName = 'admin'");
//            if (rs.next())
//            {
//                retVal = rs.getString(1);
//            }
//
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
//
//        return retVal;
//    }
//
//    public int retrieveAccountBalance(String userName)
//    {
//        int balanceReturn=-1;
//        if (!(validateUsername(userName)))
//        {
//            return -1;
//        }
//        try
//        {/*
//            Integer balance=(Integer)Memcache.getInstance().get("balance-"+userName);
//            if(balance==null){
//                switchConnection(1);
//                Statement s = conn.createStatement();
//                ResultSet rs = s.executeQuery("select Money1 from vivoo_User_Mobile where UserName='" + userName + "'");
//                if (rs.next())
//                {
//                    balanceReturn= rs.getInt(1);
//                }
//                s.close();
//                Memcache.getInstance().set("balance-"+userName, 3600, balanceReturn);
//            }else{
//                return balance;
//            }
//          * */
//            //switchConnection(1);
//            Statement s = conn.createStatement();
//            ResultSet rsa = s.executeQuery("select Money1 from vivoo_User_Mobile where UserName='" + userName + "'");
//            if (rsa.next())
//            {
//                balanceReturn= rsa.getInt(1);
//            }
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
//        return balanceReturn;
//    }


//    public int retrieveAccountBalance(String userName)
//    {
//        int money = 0 ;
//
//        money = CoreClient.GetMoneyMobile(userName,0);
//
//        return money;
//    }


//    public boolean setUserMoney(String userName, int newValue)
//    {
//        if (!(validateUsername(userName)))
//        {
//            return false;
//        }
//
//        try
//        {
//            if(newValue<0) newValue=0;
//            //switchConnection(1);
//            Statement s = conn.createStatement();
//            s.execute("update vivoo_User_Mobile set Money1='" + newValue + "' where UserName = '" + userName + "'");
//            s.close();
//            //Memcache.getInstance().delete("balance-"+userName);
//            //Memcache.getInstance().set("balance-"+userName,3600,newValue);
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//            return false;
//        }
//        return true;
//    }


//     public boolean setUserMoney(String userName, int newValue)
//    {
//
//         boolean retVal = false;
//
//
//
//
//        if (!(validateUsername(userName)))
//        {
//            return false;
//        }
//
//        try
//        {
//             retVal = CoreClient.UpdateMoneyMobile(userName,newValue,0);
//        }
//        catch (Exception ex)
//        {
//             retVal =  false;
//        }
//        return retVal;
//    }
    /**
     * ThÃªm vÃ o danh sÃ¡ch báº¡n bÃ¨
     * @param fromUser
     * @param toUser
     * @return
     */
//    public boolean addFriend(String fromUser,String toUser){
//        try
//        {
//            Statement s = conn.createStatement();
//            s.execute("insert into friend_list values (DEFAULT, '" + fromUser + "', '" + toUser + "')");
//            //Memcache.getInstance().delete("friend-"+fromUser);
//            //Memcache.getInstance().delete("friend-"+toUser);
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//            return false;
//        }
//        return true;
//    }

//    public boolean checkFriend(String fromUser,String toUser){
//        try
//        {
//            Statement s = conn.createStatement();
//            ResultSet rs= s.executeQuery("SELECT * FROM friend_list WHERE (from_user='"+fromUser+"' AND to_user='"+toUser+"') OR (from_user='"+toUser+"' AND to_user='"+fromUser+"')" );
//            if(rs.next()){
//                return true;
//            }
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//            return false;
//        }
//        return false;
//    }

    /**
     * XÃ³a khá»�i danh sÃ¡ch báº¡n bÃ¨
     * @param fromUser
     * @param toUser
     * @return
     */
//    public boolean removeFriend(String fromUser,String toUser){
//        try
//        {
//            Statement s = conn.createStatement();
//            s.execute("delete from friend_list where (from_user='"+fromUser+"' AND to_user='"+toUser+"') OR (from_user='"+toUser+"' AND to_user='"+fromUser+"')");
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//            return false;
//        }
//        return true;
//    }

//    public boolean removePM(int id,String toUser){
//        return true;
//    }
//
//    public ArrayList getFriendList(String username){
//        ArrayList friends=new ArrayList();
//        try
//        {
//            Statement s = conn.createStatement();
//            Statement s1 = conn.createStatement();
//            Statement s2 = conn.createStatement();
//            ResultSet rs= s.executeQuery("SELECT friend_list.* FROM friend_list WHERE (friend_list.from_user='"+username+"') OR (friend_list.to_user='"+username+"')" );
//            int index=0;
//            while(rs.next())
//            {
//                UserObj userObj = new UserObj();
//                String fromUser=rs.getString("from_user");
//                String toUser=rs.getString("to_user");
//                if(!fromUser.equals(username)){
//                    userObj.username=fromUser;
//                }else{
//                    userObj.username=toUser;
//                }
//                friends.add(index,userObj);
//                index++;
//            }
//            s.close();
//            s1.close();
//            s2.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
//        return friends;
//    }

    /**
     * LÆ°u private message
     * @param fromUser
     * @param toUser
     * @param text
     * @return
     */
//    public int createMessage(String fromUser,String toUser,String text){
//        int lastInsertedId=0;
//        try
//        {
//            Statement s = conn.createStatement();
//            long timestamp = System.currentTimeMillis()/1000;
//            s.executeUpdate("insert into message values (DEFAULT, '" + fromUser + "',1,1,'" + toUser + "',0,1,0,'"+text+"','"+text+"','"+timestamp+"')",Statement.RETURN_GENERATED_KEYS);
//            ResultSet rs = s.getGeneratedKeys();
//            if (rs != null && rs.next()) {
//              lastInsertedId = rs.getInt(1);
//            }
//            lastInsertedId = rs.getInt(1);
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//            //return lastInsertedId;
//        }
//        return lastInsertedId;
//    }

    /**
     * Láº¥y inbox message
     * @param currentUser
     * @return
     */
//    public ArrayList getInboxMessage(String currentUser){
//        ArrayList pms=new ArrayList();
//        try
//        {
//            Statement s = conn.createStatement();
//            ResultSet rs= s.executeQuery("SELECT * FROM message WHERE touser='"+currentUser+"' AND tostatus=1 ORDER BY poston DESC");
//            int index=0;
//            while(rs.next())
//            {
//                PrivateMessage pmObj = new PrivateMessage();
//                pmObj.messageId=rs.getInt("message_id");
//                pmObj.fromUser=rs.getString("fromuser");
//                pmObj.toUser=rs.getString("touser");
//                pmObj.title=rs.getString("title");
//                pmObj.text=rs.getString("text");
//                pmObj.toView=rs.getByte("toview");
//                pms.add(index,pmObj);
//                index++;
//            }
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
//        return pms;
//    }
//
//    //Ä�Ã³ng connection cÅ©,má»Ÿ connection má»›i
//    public void switchConnection(int i){
//        closeConnection();
//        conn = getCustomConnection(i);
//    }
//
//    public boolean updateFullname(String username,String fullname){
//        try
//        {
//            Statement s = conn.createStatement();
//            s.execute("update users set fullname='" + fullname + "' where username = '" + username + "'");
//            //Memcache.getInstance().delete("info-"+username);
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//            return false;
//        }
//        return true;
//    }
//
//    public boolean updateGender(String username,int gender){
//        try
//        {
//            Statement s = conn.createStatement();
//            s.execute("update users set gender='" + gender + "' where username = '" + username + "'");
//            //Memcache.getInstance().delete("info-"+username);
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//            return false;
//        }
//        return true;
//    }
//
//    public boolean updateBirthYear(String username,int birthyear){
//        try
//        {
//            Statement s = conn.createStatement();
//            s.execute("update users set birth_year='" + birthyear + "' where username = '" + username + "'");
//            //Memcache.getInstance().delete("info-"+username);
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//            return false;
//        }
//        return true;
//    }
//
//    public boolean updateAddress(String username,String address){
//        try
//        {
//            Statement s = conn.createStatement();
//            s.execute("update users set address='" + address + "' where username = '" + username + "'");
//            //Memcache.getInstance().delete("info-"+username);
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//            return false;
//        }
//        return true;
//    }
//
//    public boolean updateMessageViewStatus(int id,int status){
//        try
//        {
//            Statement s = conn.createStatement();
//            s.execute("update message set toview='" + status + "' where message_id = '" + id + "'");
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//            return false;
//        }
//        return true;
//    }
//
//    public boolean updateMessageStatus(int id,int status){
//        try
//        {
//            Statement s = conn.createStatement();
//            s.execute("update message set tostatus='" + status + "' where message_id = '" + id + "'");
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//            return false;
//        }
//        return true;
//    }
//
//    public boolean updateCMND(String username,String cmnd){
//        try
//        {
//            Statement s = conn.createStatement();
//            s.execute("update users set cmnd='" + cmnd + "' where username = '" + username + "'");
//            //Memcache.getInstance().delete("info-"+username);
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//            return false;
//        }
//        return true;
//    }
//
//    public boolean updateMobile(String username,String mobile){
//        try
//        {
//            Statement s = conn.createStatement();
//            s.execute("update users set mobile='" + mobile + "' where username = '" + username + "'");
//            //Memcache.getInstance().delete("info-"+username);
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//            return false;
//        }
//        return true;
//    }
//
//    public boolean updateCity(String username,String city){
//        try
//        {
//            Statement s = conn.createStatement();
//            s.execute("update users set city='" + city + "' where username = '" + username + "'");
//            //Memcache.getInstance().delete("info-"+username);
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//            return false;
//        }
//        return true;
//    }
//
//    public int getUserAvatar(String username){
//        int id=0;
//        try
//        {
//            switchConnection(0);
//            Statement s = conn.createStatement();
//            ResultSet rsa = s.executeQuery("select avatar from users where username='" + username + "'");
//            if (rsa.next())
//            {
//                id= rsa.getInt("avatar");
//            }
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
//        return id;
//    }
//
//    public  InputStream  getAvatarById(int id){
//         InputStream stream = null;
//        try
//        {
//            switchConnection(0);
//            Statement s = conn.createStatement();
//            ResultSet rsa = s.executeQuery("select image from avatar where id='" + id + "'");
//            if (rsa.next())
//            {
//                stream = rsa.getBinaryStream("image");
//            }
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
//        return stream;
//    }
//
//    public byte setAvatar(String username,int avatarId){
//        try
//        {
//            switchConnection(0);
//            Statement s = conn.createStatement();
//            s.execute("update users set avatar='" + avatarId + "' where username = '" + username + "'");
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//            return 0;
//        }
//        return 1;
//    }
//
//    public ArrayList getAvatarList(){
//        ArrayList listAvatar=new ArrayList();
//        try
//        {
//            switchConnection(0);
//            Statement s = conn.createStatement();
//            ResultSet rs = s.executeQuery("select id, name, money from avatar where active='1'");
//            while (rs.next())
//            {
//                ItemObj avatar = new ItemObj();
//                avatar.id=rs.getInt("id");
//                //avatar.image=rs.getString("image");
//                avatar.name=rs.getString("name");
//                avatar.money=rs.getInt("money");
//                listAvatar.add(avatar);
//            }
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
//        return listAvatar;
//    }
//
//    public int getAvatarMoney(int avatarId){
//        int money=0;
//        try
//        {
//            switchConnection(0);
//            Statement s = conn.createStatement();
//            ResultSet rs = s.executeQuery("select money from avatar where id='"+avatarId+"'");
//            if (rs.next())
//            {
//                money=rs.getInt("money");
//            }
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
//        return money;
//    }
//
//    public ArrayList getRoomList(){
//        ArrayList listRoom = new ArrayList();
//        try
//        {
//            switchConnection(0);
//            Statement s = conn.createStatement();
//            ResultSet rs = s.executeQuery("select id, code, name, type, money from tl_room where game=0 order by type, code ASC");
//            while(rs.next())
//            {
//                //int id=rs.getInt("id");
//                String code=rs.getString("code");
//                String name=rs.getString("name");
//                int type = rs.getInt("type");
//                int money =rs.getInt("money");
//                //ArrayList room = new ArrayList();
//                GameRoom gr =new GameRoom();
//                gr.code = code;
//                gr.name = name;
//                gr.type = type;
//                gr.money = money;
////                room.add(id);
////                room.add(code);
////                room.add(name);
////                room.add(type);
////                room.add(money);
////                listRoom.add(room);
//                listRoom.add(gr);
//            }
//            s.close();
//        }catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
//        return listRoom;
//    }
//
//    public ArrayList getBestRichPlayer(){
//        ArrayList playerList = new ArrayList();
//        try
//        {
//            //switchConnection(1);
//            Statement s = conn.createStatement();
//            ResultSet rs = s.executeQuery("select UserName,Money1 from vivoo_User_Mobile order by Money1 DESC LIMIT 10");
//            while(rs.next())
//            {
//                String username=rs.getString("UserName");
//                int money =rs.getInt("Money1");
//                ArrayList player = new ArrayList();
//                player.add(username);
//                player.add(money);
//                playerList.add(player);
//            }
//            s.close();
//        }catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
//        return playerList;
//    }


//    public ArrayList getBestRichPlayer(){
//
//        ArrayList playerList = new ArrayList();
//
//        playerList = CoreClient.GetUserListByField("user_money",10,1);
//
//        return playerList;
//    }

    public boolean updateAccountInfo(UserObj userinfo) {
            boolean result = updateAccountInfo(userinfo.username,
                    userinfo.fullname, userinfo.address, userinfo.birth_year,
                    userinfo.gender, userinfo.cmnd, userinfo.mobile, userinfo.city);
            return result;
    }


//    public ArrayList getBestPlayer(){
//        ArrayList playerList = new ArrayList();
//        try
//        {
//            switchConnection(0);
//            Statement s = conn.createStatement();
//            String sqlStatement = "SELECT username, SUM(result) as rate FROM best_player "+
//                "WHERE game_id=0 "+
//                "GROUP BY username "+
//                "ORDER BY rate DESC LIMIT 10";
//            ResultSet rs = s.executeQuery(sqlStatement);
//
//            while(rs.next())
//            {
//                String username=rs.getString("username");
//                int rate =rs.getInt("rate");
//                ArrayList player = new ArrayList();
//                player.add(username);
//                player.add(rate);
//                playerList.add(player);
//            }
//            s.close();
//        }catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
//        return playerList;
//    }

//    public boolean updateGameHistory(String username, int result){
//        try
//        {
//            switchConnection(0);
//            Statement s = conn.createStatement();
//            // result: 1: win; 0: draw; -1: lose
//            String sqlStatement = "INSERT INTO best_player (username, game_id, result, play_date) " +
//                    "VALUES ('"+username+"', 0, "+result+", NOW())";
//            boolean ret = s.execute(sqlStatement);
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//            return false;
//        }
//        return true;
//    }
//
//    public int getAvatarListCount() {
//        int result = 0;
//        try
//        {
//            switchConnection(0);
//            Statement s = conn.createStatement();
//            ResultSet rs = s.executeQuery("select count(id) from avatar where active='1'");
//            if (rs.next())
//            {
//                result=rs.getInt(1);
//            }
//            s.close();
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
//        return result;
//    }
//
//    public ItemImageRequest getItemImage(int itemID, String itemName, byte requestType) {
//        try        {
//            switchConnection(0);
//            String sqlStatement = "select id, name, ";
//            switch (requestType)
//            {
//                case 0: sqlStatement += "image";
//                case 1: sqlStatement += "thumbnail";
//                case 2: sqlStatement += "image, thumbnail";
//            }
//            sqlStatement += " from avatar where ";
//            if (itemID>=0) {
//                sqlStatement += "id='" + itemID + "'";
//            }
//            else if (itemName != null) {
//                sqlStatement += "name='" + itemName + "'";
//            }
//            else return null;
//
//            ItemImageRequest itemImage = new ItemImageRequest();
//            Statement s = conn.createStatement();
//            ResultSet rsa = s.executeQuery(sqlStatement);
//            if (rsa.next())
//            {
//                itemImage.itemID = rsa.getInt("id");
//                itemImage.itemName = rsa.getString("name");
//                if ((requestType==0)||(requestType==2)) {
//                    itemImage.streamImage = rsa.getBinaryStream("image");
//                }
//                if ((requestType==1)||(requestType==2)) {
//                    itemImage.streamThumbImage = rsa.getBinaryStream("thumbnail");
//                }
//            }
//            s.close();
//            return itemImage;
//        }
//        catch (Exception ex)
//        {
//            log.error(ex.getClass().getName(),ex);
//        }
//        return null;
//    }

}
